﻿using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace Send1
{
    class MyServer
    {
        static void Main()
        {
            // 要接收的特定字符串
            string expectedString = "第50行：hello cqjtu！重交物联2019级";
            // 使用UTF8编码来确保发送和接收端使用相同的编码
            Encoding encoding = Encoding.UTF8;

            // 使用using语句确保UdpClient资源被正确释放
            using (UdpClient client = new UdpClient(50789))
            {
                Console.WriteLine("服务器正在端口50789上监听数据...");
                IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);

                while (true)
                {
                    try
                    {
                        // 接收数据
                        byte[] receiveData = client.Receive(ref remoteEndPoint);
                        string receiveString = encoding.GetString(receiveData);

                        // 输出接收到的数据
                        Console.WriteLine($"从{remoteEndPoint}接收到数据: {receiveString}");

                        // 检查接收到的数据是否与预期字符串匹配
                        if (string.Equals(receiveString, expectedString, StringComparison.Ordinal))
                        {
                            Console.WriteLine("接收到预期的数据，服务器即将退出...");
                            break;
                        }
                    }
                    catch (SocketException ex)
                    {
                        // 处理套接字异常，例如网络中断
                        Console.WriteLine($"套接字异常: {ex.Message}");
                        break; // 或者根据需要采取其他措施
                    }
                    catch (Exception ex)
                    {
                        // 处理其他异常
                        Console.WriteLine($"异常: {ex.Message}");
                    }
                }
            }

            Console.WriteLine("服务器已退出，按任意键退出程序...");
            Console.ReadKey();
        }
    }
}
